/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.datamodel;

import com.ec.socialfun.datamanager.InformacionSucursalesDataManager;
import com.ec.socialfun.entidades.Pais;
import com.ec.socialfun.entidades.Sucursal;
import com.ec.socialfun.servicios.SucursalFacade;
import com.ec.socialfun.servicios.UsuarioFacade;
import com.ec.socialfun.util.Consulta;
import com.ec.socialfun.util.LookupBeanUtil;
import java.util.List;
import java.util.Map;
import org.jboss.logging.Logger;
import org.primefaces.model.SortOrder;

/**
 *
 * @author hp
 */
public class InformacionSucursalesDataModel extends DataModelPadre<Sucursal> {

    SucursalFacade sucursalFacade = (SucursalFacade) LookupBeanUtil.lookup(SucursalFacade.class.getSimpleName());
    UsuarioFacade usuarioFacade = (UsuarioFacade) LookupBeanUtil.lookup(UsuarioFacade.class.getSimpleName());
    private static final Logger LOG = Logger.getLogger(InformacionSucursalesDataModel.class.getName());

    private Pais recuperaPaisUsuario() {
        String username = this.obtenerUsuarioLogeado();
        return usuarioFacade.recuperaUsuarioPorMail(username).getZoCodigo().getCiCodigo().getPaCodigo();
    }

    @Override
    public List<Sucursal> load(int indicePrimerRegistro, int tamanoPagina, String columnaOrdenamiento, SortOrder tipoDeOrdenamiento,
            Map<String, String> filtros) {

        InformacionSucursalesDataManager informacionSucursalesDataManager = (InformacionSucursalesDataManager) this.obtenerBean("informacionSucursalesDataManager");

        // para la primera ves que ingresa, se le otorga el pais por defecto
        if (informacionSucursalesDataManager.getPaisSeleccionado() == null) {
            informacionSucursalesDataManager.setPaisSeleccionado(recuperaPaisUsuario());
        }

        if (informacionSucursalesDataManager.isLimpiaFiltro()) {
            filtros.clear();
            informacionSucursalesDataManager.setLimpiaFiltro(false);
        }

        filtros.put("zoCodigo.ciCodigo.paCodigo.paCodigo", informacionSucursalesDataManager.getPaisSeleccionado().getPaCodigo().toString());


        LOG.info("indicePrimerRegistro = " + indicePrimerRegistro);
        LOG.info("tamanoPagina = " + tamanoPagina);
        LOG.info("columnaOrdenamiento = " + columnaOrdenamiento);
        LOG.info("tipoDeOrdenamiento = " + tipoDeOrdenamiento.name());
        LOG.info("filtros = " + filtros);


        Consulta<Sucursal> consulta = new Consulta<Sucursal>();
        consulta.setPrimerRegistro(indicePrimerRegistro);
        consulta.setTamanoPagina(tamanoPagina);
        consulta.setColumnaOrdenar(columnaOrdenamiento);
        consulta.setTipoDeOrdenamiento(tipoDeOrdenamiento.name());
        consulta.setFiltro(filtros);

        consulta = sucursalFacade.recuperarSucursales(consulta);
        LOG.info("sucursales = " + consulta.getContador());
        this.setRowCount(consulta.getContador());
        List<Sucursal> lista = consulta.getLista();
        for (Sucursal sucursal : lista) {
            sucursal.getLoCodigo();
            sucursal.setImagenes(sucursalFacade.recuperaListaDeImagenesPorLocal(sucursal));
        }
        return lista;

    }
}
